MVVM (Model-View-ViewModel) প্যাটার্নে View Switching এবং Navigation Service ব্যবহৃত হয় যখন অ্যাপ্লিকেশনে একাধিক ভিউ বা পৃষ্ঠা (Page/View) থাকে এবং ব্যবহারকারী তাদের মধ্যে নেভিগেট করতে সক্ষম হয়। এর মাধ্যমে অ্যাপ্লিকেশনটির ভিউ এবং নেভিগেশনকে ম্যানেজ করা হয়, তবে এই প্রক্রিয়াটি ViewModel থেকে View কে সরাসরি প্রভাবিত না করে।
View Switching এর মাধ্যমে একটি ভিউ থেকে অন্য ভিউতে দ্রুত পরিবর্তন করা হয়। MVVM প্যাটার্নে এটি ViewModel-এর নির্দেশে পরিচালিত হয়, যা View এবং Navigation Service এর মাধ্যমে ঘটানো হয়।
ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন যেখানে দুটি ভিউ রয়েছে—HomePage এবং DetailsPage। আমরা চাই যে, একটি বাটন ক্লিক করলে HomePage থেকে DetailsPage-এ চলে যাবে। এখানে ViewModel থেকে ভিউ পরিবর্তন করা হবে।
public interface INavigationService
{
void NavigateTo(string pageKey);
}
public class NavigationService : INavigationService
{
private readonly IDictionary<string, Type> _pageMappings;
public NavigationService()
{
_pageMappings = new Dictionary<string, Type>();
}
public void RegisterPage(string key, Type pageType)
{
if (!_pageMappings.ContainsKey(key))
{
_pageMappings.Add(key, pageType);
}
}
public void NavigateTo(string pageKey)
{
Type pageType;
if (_pageMappings.TryGetValue(pageKey, out pageType))
{
var page = (Page)Activator.CreateInstance(pageType);
Application.Current.MainPage.Navigation.PushAsync(page);
}
}
}
public class HomePageViewModel
{
private readonly INavigationService _navigationService;
public HomePageViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
}
public ICommand NavigateToDetailsCommand => new Command(() =>
{
_navigationService.NavigateTo("DetailsPage");
});
}
<!-- HomePage.xaml -->
<Button Text="Go to Details" Command="{Binding NavigateToDetailsCommand}" />
public class App : Application
{
public App()
{
var navigationService = new NavigationService();
navigationService.RegisterPage("HomePage", typeof(HomePage));
navigationService.RegisterPage("DetailsPage", typeof(DetailsPage));
MainPage = new NavigationPage(new HomePage
{
BindingContext = new HomePageViewModel(navigationService)
});
}
}
Navigation Service ব্যবহার করার অনেক সুবিধা রয়েছে, যেমন:
এমন কিছু চ্যালেঞ্জও থাকতে পারে, যেমন:
View Switching এবং Navigation Service MVVM প্যাটার্নে ViewModel এবং View এর মধ্যে ম্যানেজড এবং স্কেলেবল নেভিগেশন প্রদান করে। NavigationService ক্লাসের মাধ্যমে বিভিন্ন ভিউ এর মধ্যে নেভিগেট করা সহজ হয় এবং অ্যাপ্লিকেশনের লজিক এবং UI কে পৃথক রাখার মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়। তবে, যথাযথ স্টেট ম্যানেজমেন্ট এবং পারফরম্যান্সের বিষয়ে সতর্ক থাকা প্রয়োজন, বিশেষত যখন অ্যাপ্লিকেশনে অনেক ভিউ এবং পৃষ্ঠা ব্যবহৃত হয়।
common.read_more